Boolean Expressions এবং Short-Circuit Evaluation

Computer Programming - ক্লোজার (Clojure) কন্ডিশনাল স্টেটমেন্টস (Conditional Statements) |
226
226

Boolean Expressions এবং Short-Circuit Evaluation

ক্লোজারে (Clojure) বুলিয়ান এক্সপ্রেশন এবং শর্ট-সার্কিট ইভ্যালুয়েশন (Short-Circuit Evaluation) প্রোগ্রামিংয়ের গুরুত্বপূর্ণ অংশ। বুলিয়ান এক্সপ্রেশন হল এমন এক্সপ্রেশন যা true বা false হিসেবে মূল্যায়ন করে। শর্ট-সার্কিট ইভ্যালুয়েশন একটি অপ্টিমাইজেশন কৌশল, যেখানে নির্দিষ্ট শর্ত মিট হলে বাকি অংশ মূল্যায়ন না করেই এক্সপ্রেশন শেষ হয়।


Boolean Expressions

ক্লোজারে, বুলিয়ান এক্সপ্রেশন সাধারণত true বা false ভ্যালু প্রদান করে এবং সাধারণ লজিক্যাল অপারেটর ব্যবহার করে তৈরি করা হয়, যেমন and, or, এবং not। ক্লোজারে nil এবং false ছাড়া সবকিছু সত্যি (truthy) হিসেবে বিবেচিত হয়।

উদাহরণ: বুলিয়ান এক্সপ্রেশন

(def age 20)
(def adult? (>= age 18)) ; age যদি 18 বা তার বেশি হয়, তাহলে adult? হবে true

এখানে >= অপারেটর ব্যবহার করে adult? ভ্যারিয়েবলের মান নির্ধারণ করা হয়েছে। age যদি ১৮ বা তার বেশি হয়, তাহলে adult? এর মান হবে true অন্যথায় false


Short-Circuit Evaluation

শর্ট-সার্কিট ইভ্যালুয়েশন এমন একটি কৌশল যেখানে লজিক্যাল অপারেটরের প্রথম অংশেই এক্সপ্রেশনের ফলাফল নির্ধারণ করা গেলে, পরবর্তী অংশগুলিকে আর মূল্যায়ন করা হয় না। ক্লোজারে and এবং or অপারেটর এই শর্ট-সার্কিট ইভ্যালুয়েশন প্রক্রিয়া অনুসরণ করে।

and অপারেটর এবং Short-Circuit Evaluation

and অপারেটর তখনই true রিটার্ন করে যখন সব এক্সপ্রেশন সত্য হয়। প্রথম কোনো এক্সপ্রেশন false হলে, বাকি অংশগুলি মূল্যায়ন করা হয় না, কারণ একবার false পাওয়া গেলে ফলাফলও false হবে।

(defn check-age-and-status [age status]
  (and (>= age 18) (= status "active")))
  
(check-age-and-status 20 "active") ; আউটপুট: true
(check-age-and-status 15 "active") ; আউটপুট: false, কারণ প্রথম শর্তই false

এখানে, (>= age 18) শর্তটি false হলে (= status "active") পরীক্ষা করা হয় না, যা শর্ট-সার্কিট ইভ্যালুয়েশনের উদাহরণ।

or অপারেটর এবং Short-Circuit Evaluation

or অপারেটর তখনই true রিটার্ন করে যখন অন্তত একটি এক্সপ্রেশন সত্য হয়। প্রথম কোনো এক্সপ্রেশন true হলে, বাকি অংশগুলি মূল্যায়ন করা হয় না, কারণ প্রথম true ভ্যালু পেলেই ফলাফলও true হবে।

(defn check-permission [role permission]
  (or (= role "admin") (= permission "granted")))
  
(check-permission "admin" "denied") ; আউটপুট: true, কারণ প্রথম শর্ত true
(check-permission "user" "granted") ; আউটপুট: true, কারণ দ্বিতীয় শর্ত true
(check-permission "user" "denied") ; আউটপুট: false

এখানে, role যদি "admin" হয়, তাহলে পরবর্তী শর্ত (= permission "granted") মূল্যায়ন করার প্রয়োজন হয় না, কারণ or অপারেটর প্রথম শর্ত true পেলেই true রিটার্ন করে।


not অপারেটর

not অপারেটর একটি একক বুলিয়ান এক্সপ্রেশনকে উল্টো মান প্রদান করে। এটি true কে false এবং false কে true করে।

(def logged-in false)
(def guest? (not logged-in)) ; আউটপুট: true

এখানে logged-in ভ্যারিয়েবলের মান false হওয়ায় guest? হবে true


শর্ট-সার্কিট ইভ্যালুয়েশনের সুবিধাসমূহ

  1. পারফরম্যান্স অপ্টিমাইজেশন: অপ্রয়োজনীয় এক্সপ্রেশন মূল্যায়ন না করার কারণে কোডের পারফরম্যান্স উন্নত হয়।
  2. নিরাপদ অপারেশন: যখন ডিভিশন বা নাল চেকের মতো শর্ত থাকে, শর্ট-সার্কিট ইভ্যালুয়েশন ব্যবহার করে এড়ানো যায়।
  3. সহজ শর্ত: কমপ্লেক্স শর্তের মূল্যায়ন শর্ট-সার্কিটের মাধ্যমে সহজ হয়।

সারসংক্ষেপ

অপারেটরকাজশর্ট-সার্কিটের ধরন
andসব এক্সপ্রেশন সত্য হলে trueপ্রথম false পেলে বাকি অংশ ইভ্যালুয়েট হয় না
orকোনো একটি এক্সপ্রেশন সত্য হলে trueপ্রথম true পেলে বাকি অংশ ইভ্যালুয়েট হয় না
notএক্সপ্রেশন উল্টায়শুধু একক এক্সপ্রেশনে ব্যবহৃত হয়

ক্লোজারে বুলিয়ান এক্সপ্রেশন এবং শর্ট-সার্কিট ইভ্যালুয়েশন কার্যকর শর্ত নির্ধারণ ও অপ্টিমাইজেশনের জন্য গুরুত্বপূর্ণ এবং প্রোগ্রামিংকে আরও কার্যকর ও সুরক্ষিত করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion